From 1babae4d0c7a153211fe92a32199ded676f6e477 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Tue, 13 Mar 2007 10:32:52 +0000 Subject: [PATCH] hvmloader: Avoid compile warnings char vs. unsigned char. Avoid 'magic number' hardcoded string lengths. Signed-off-by: Keir Fraser --- tools/firmware/hvmloader/acpi/acpi2_0.h | 8 ++++---- tools/firmware/hvmloader/acpi/build.c | 26 +++++++++++++------------ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/tools/firmware/hvmloader/acpi/acpi2_0.h b/tools/firmware/hvmloader/acpi/acpi2_0.h index 04824f5642..7dde528a48 100644 --- a/tools/firmware/hvmloader/acpi/acpi2_0.h +++ b/tools/firmware/hvmloader/acpi/acpi2_0.h @@ -49,8 +49,8 @@ struct acpi_header { uint32_t length; uint8_t revision; uint8_t checksum; - uint8_t oem_id[6]; - uint8_t oem_table_id[8]; + char oem_id[6]; + char oem_table_id[8]; uint32_t oem_revision; uint32_t creator_id; uint32_t creator_revision; @@ -90,7 +90,7 @@ struct acpi_20_generic_address { struct acpi_10_rsdp { uint64_t signature; uint8_t checksum; - uint8_t oem_id[6]; + char oem_id[6]; uint8_t reserved; uint32_t rsdt_address; }; @@ -101,7 +101,7 @@ struct acpi_10_rsdp { struct acpi_20_rsdp { uint64_t signature; uint8_t checksum; - uint8_t oem_id[6]; + char oem_id[6]; uint8_t revision; uint32_t rsdt_address; uint32_t length; diff --git a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c index ff99160612..55a48d440e 100644 --- a/tools/firmware/hvmloader/acpi/build.c +++ b/tools/firmware/hvmloader/acpi/build.c @@ -22,7 +22,8 @@ #include "../util.h" #include -#define align16(sz) (((sz) + 15) & ~15) +#define align16(sz) (((sz) + 15) & ~15) +#define fixed_strcpy(d, s) strncpy((d), (s), sizeof(d)) extern struct acpi_20_rsdp Rsdp; extern struct acpi_20_rsdt Rsdt; @@ -57,8 +58,8 @@ int construct_madt(struct acpi_20_madt *madt) memset(madt, 0, sizeof(*madt)); madt->header.signature = ACPI_2_0_MADT_SIGNATURE; madt->header.revision = ACPI_2_0_MADT_REVISION; - strncpy(madt->header.oem_id, ACPI_OEM_ID, 6); - strncpy(madt->header.oem_table_id, ACPI_OEM_TABLE_ID, 8); + fixed_strcpy(madt->header.oem_id, ACPI_OEM_ID); + fixed_strcpy(madt->header.oem_table_id, ACPI_OEM_TABLE_ID); madt->header.oem_revision = ACPI_OEM_REVISION; madt->header.creator_id = ACPI_CREATOR_ID; madt->header.creator_revision = ACPI_CREATOR_REVISION; @@ -131,8 +132,8 @@ int construct_hpet(struct acpi_20_hpet *hpet) memset(hpet, 0, sizeof(*hpet)); hpet->header.signature = ACPI_2_0_HPET_SIGNATURE; hpet->header.revision = ACPI_2_0_HPET_REVISION; - strncpy(hpet->header.oem_id, ACPI_OEM_ID, 6); - strncpy(hpet->header.oem_table_id, ACPI_OEM_TABLE_ID, 8); + fixed_strcpy(hpet->header.oem_id, ACPI_OEM_ID); + fixed_strcpy(hpet->header.oem_table_id, ACPI_OEM_TABLE_ID); hpet->header.oem_revision = ACPI_OEM_REVISION; hpet->header.creator_id = ACPI_CREATOR_ID; hpet->header.creator_revision = ACPI_CREATOR_REVISION; @@ -150,6 +151,7 @@ int construct_processor_objects(uint8_t *buf) { static const char pdat[13] = { 0x5b, 0x83, 0x0b, 0x50, 0x52 }; static const char hex[] = "0123456789ABCDEF"; + static const char pr_scope[] = "\\_PR_"; unsigned int i, length, nr_cpus = get_vcpu_nr(); struct acpi_header *hdr; uint8_t *p = buf; @@ -161,8 +163,8 @@ int construct_processor_objects(uint8_t *buf) hdr = (struct acpi_header *)p; hdr->signature = ASCII32('S','S','D','T'); hdr->revision = 2; - strncpy(hdr->oem_id, ACPI_OEM_ID, 6); - strncpy(hdr->oem_table_id, ACPI_OEM_TABLE_ID, 8); + fixed_strcpy(hdr->oem_id, ACPI_OEM_ID); + fixed_strcpy(hdr->oem_table_id, ACPI_OEM_TABLE_ID); hdr->oem_revision = ACPI_OEM_REVISION; hdr->creator_id = ACPI_CREATOR_ID; hdr->creator_revision = ACPI_CREATOR_REVISION; @@ -176,7 +178,7 @@ int construct_processor_objects(uint8_t *buf) *p++ = 0x10; /* PkgLength (includes length bytes!). */ - length = 1 + 5 + (nr_cpus * sizeof(pdat)); + length = 1 + strlen(pr_scope) + (nr_cpus * sizeof(pdat)); if ( length <= 0x3f ) { *p++ = length; @@ -195,8 +197,8 @@ int construct_processor_objects(uint8_t *buf) } /* NameString */ - strncpy(p, "\\_PR_", 5); - p += 5; + strncpy(p, pr_scope, strlen(pr_scope)); + p += strlen(pr_scope); /* * 3. Processor Objects. @@ -263,8 +265,8 @@ int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs) tcpa->header.signature = ACPI_2_0_TCPA_SIGNATURE; tcpa->header.length = sizeof(*tcpa); tcpa->header.revision = ACPI_2_0_TCPA_REVISION; - strncpy(tcpa->header.oem_id, ACPI_OEM_ID, 6); - strncpy(tcpa->header.oem_table_id, ACPI_OEM_TABLE_ID, 8); + fixed_strcpy(tcpa->header.oem_id, ACPI_OEM_ID); + fixed_strcpy(tcpa->header.oem_table_id, ACPI_OEM_TABLE_ID); tcpa->header.oem_revision = ACPI_OEM_REVISION; tcpa->header.creator_id = ACPI_CREATOR_ID; tcpa->header.creator_revision = ACPI_CREATOR_REVISION; -- 2.30.2